The present invention relates to the field of home automation and control systems and, more particularly, to a method and apparatus for providing distributed programming of a home automation and control system.
Home automation and control systems are used to control the behavior of an environment such as a home or office building. Home automation and control systems allow home occupants to automate and control the use of electrical products and appliances in and around the building. Home automation and control systems create and launch xe2x80x9cscenes,xe2x80x9d also called house scenes, involving one or more products and appliances. Examples of the types of products and appliances that can be automated and controlled are lighting, entertainment, cooking, heating, air conditioning, window treatments and landscaping. Examples of specific products and appliances that can be automated and controlled are lights, television sets, sound systems, coffee machines, ovens, furnaces, air conditioners, humidifiers and lawn sprinklers. Each product or appliance can be set to a number of different states, i.e., on, off, and, if appropriate, intermediate level. The controller of an electrical product or appliance, together with its effect on the controlled electrical product or appliance, will be referred to as a xe2x80x9cdevice.xe2x80x9d The controller may be a physically separate entity from the product or appliance being controlled, or the controller may be physically embedded or integrated into the product or appliance being controlled.
A xe2x80x9cscenexe2x80x9d includes one (1) or more devices set to a particular state. For example, a morning scene could include the furnace set to 70xc2x0, the master bathroom lights on at 50%, the kitchen lights on at 100%, the coffee machine on, the television set in the kitchen on to a particular channel, and the front porch light off. This setting of devices constitutes one scene, and may be triggered by a trigger event also defined by the user, such as the press of a button on a remote control. A different scene may set additional devices and some or all of the members of the one scene to the same or different states.
Scenes may include devices that can be set to level values, such as light dimmers, fan speeds, audio volume controls and device channels. Scenes that include devices set at level values are often difficult to create because each additional scene member changes the total effect, and changing a level of one device may make a previously set level in other scene device now undesirable. For example, the main lighting in a room could be set to the desired total illumination. But the local illumination by the user""s reading chair may not be bright enough, so the chair lighting is increased, which may make the room total light too bright, and reducing the other room lights to get the desired total illumination may cause the local illumination by the reading chair light to become too low again. Getting the exact value desired for scene devices may take a lot of trial and error adjustment to the level values until the final device values give the desired total scene effect. Current home automation and control systems create scenes with complex, interacting level values using several methods, each of which has significant drawbacks.
One method is to program the entire scene so that the scene is correct the first time. The human programmer must then go experience the scene to determine if the desired scene effect is right. If the scene effect is wrong, the whole scene must be reprogrammed. This can be a time-consuming process for scenes with many device levels to be set at different values.
Another method is to use a central controller or centralized programmer to set the value level of each scene device individually. The human programmer must then go experience the scene to determine if the desired scene effect is right. If the scene effect is wrong, each device level that is not correct must be reset by the central controller or centralized programmer. This can be a time-consuming process for scenes with many device levels to be set at different values.
A further method is to have the human programmer adjust the devices while experiencing the scene. When the human programmer is satisfied with the total scene effect, the central controller or centralized programmer queries the devices to acquire each scene member""s level. This method is prone to error because the human programmer, who must indicate to the central controller or centralized programmer which devices are part of the scene, may forget to include a scene device that was manually adjusted to create the desired scene effect.
Therefore, in light of the above, there is a need for a home automation and control scene programming method that allows infinite scene member of manual adjustments before finalizing a scene, and that automatically keeps track of all scene members, thereby reducing time and scene programming error rate.
The present invention provides a method and system for programming home automation and control system scenes that both allows unlimited scene member manual adjustments to be made before finalizing a scene, and that also automatically keeps track of all scene members, thereby reducing time and scene programming error rate. More specifically, this invention is directed to a simple programming interface, called SPI, that allows a user to create uniquely identified scenes by putting all devices in the whole system in a scene programming mode, which also starts a programming session. Each and every scene member is adjusted as many times as desired in any order. When all members have been adjusted to the final desired states, a trigger for the scene is selected, completing the programming session. At the end of a programming session, each device knows that if it has been adjusted since the start of the last system programming session and not subsequently removed as scene members, it is part of the scene being programmed with the device state value in the scene being their current device state value. Devices also know that if they have not been adjusted since the start of the last system programming session or have not been adjusted since they were last removed from the scene, they are not part of the scene being programmed in this programming session. The selection of the scene trigger initiates the creation of the scene, ends the current programming session, and starts a new programming session. While the SPI is most desirable in a system where the scene information is locally stored, SPI can be implemented in a way that sends the local state values to the selected triggering device, or to a centralized controller or programming entity for storage. As noted, the preferred use of the SPI is in systems that locally save house scenes information. An example of such a system is described in U.S. patent application Ser. No. 10/154,425 titled xe2x80x9cMethod and Apparatus for Providing Distributed Control of a Home Automation and Control System,xe2x80x9d filed concurrently herewith the subject matter of which is incorporated herein by reference. Local saving of house scene information enables truly distributed programming and distributed control of a home automation and control system.
According to an embodiment of the present invention, a microcontroller is embedded into each device within a home automation and control system along with logic for implementing the SPI. In this embodiment the SPI provides for programming scenes in distributed devices for local storage and, thus, implements distributed programming. According to this embodiment of the present invention, an indication is received by one device included in the home automation and control system that the system devices should be placed into a scene programming mode. In response to the indication, the devices are placed in a scene programming mode. Once the devices have been placed in the scene programming mode, devices may be added to the current scene being programmed in this session in response to receiving an indication that they should be included as members, such as an adjustment of a load control switch on the device. Once all desired member devices have been added to the house scene, and any accidentally added member devices have been removed as members, another indication assigns a scene launch command to the house scene. The launch scene command can be created by actuating a switch on one of the devices or an icon on a computer. Additional devices may be selected for launching the scene by copying the scene launch to each additional device. Additionally, new scenes based upon a previously created scene may be created, or an existing scene may be modified.
According to another embodiment of the present invention, the SPI is used to program a multi-way group that automatically keeps track of all multi-way members, thereby reducing the time required to program a multi-way group and the related error rate. Any control device included in a multi-way group of devices can directly and synchronously control all of the devices in that group. According to this embodiment of the present invention, an indication is received at one of the devices in the home automation and control system that the devices should be placed into a multi-way programming mode. In response to the indication, a message is broadcast to each device, thereby placing all devices in the multi-way programming mode and starting a multi-way programming session. Once the devices have been placed in the multi-way programming mode, devices may be added to the multi-way group being programmed in response to receiving an indication that they should be included, such as the press of a load control button on the device. Once the devices have been placed in the multi-way programming mode, devices may be removed from the multi-way being programmed in response to receiving an indication that they should be removed, such as the press of a load control button on an included device. Once all of the desired and only the desired group member devices have been added to the multi-way lighting context group, another indication is provided to capture the multi-way group and start a new multi-way programming session. The captured multi-way group is assigned a unique multi-way indicator. Each member of the multi-way group is then bound to that multi-way group in such a way that every member device in the multi-way group will be directly controlled by the load controller of any multi-way group member when the multi-way programming mode is exited. Additionally, a new multi-way group may be created based upon a previously created multi-way group.
The present invention also provides a computer-readable medium for providing distributed scene programming of a home automation and control system.